package com.zm.blog.vo;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

/**
 * @Author: Sister Xiao Ming
 * @Description:  CommentVO 类是用于展示评论数据的视图对象，包含了评论核心信息及需要关联查询的扩展字段
 */
@Data
public class CommentVO {

        // 基础信息
        private Integer id;                     // 评论ID
        @NotNull
        private Integer source;        // 来源标识（文章/诗词等ID）
        @NotBlank
        private String type;           // 评论来源类型（article/poetry等）

        // 层级关系
        private Integer parentCommentId;        // 父评论ID（0表示层主）
        private Integer parentUserId;           // 父评论用户ID
        private Integer userId;                 // 评论者ID

        // 内容信息
        private Integer likeCount;              // 点赞数
        @NotBlank private String commentContent; // 评论内容
        private String commentInfo;             // 附加信息（如IP等）
        private Integer floorCommentId;         // 楼层ID（子评论必传）

        // 时间信息
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private LocalDateTime createTime;       // 创建时间

        // 需要查询封装的扩展字段
        private Page childComments;            // 子评论分页数据
        private String parentUsername;         // 父评论用户名
        private String username;               // 评论者用户名
        private String avatar;                 // 评论者头像

}
